package com.szxy.service;

import com.szxy.domain.Menu;
import com.szxy.dto.MenuDto;
import com.szxy.po.SimpleUser;

import java.util.List;


public interface MenuService {

    /*** 查询菜单信息
     * 如查用户是超级管理员，那么查询所以菜单和权限
     * 如果用户是普通用户，那么根据用户 ID 关联角色和权限
     * @param isAdmin 是否是超级管理员
     * @param simpleUser 如果 isAdmin=true simpleUser 可以为空
     * */
    List<Menu> selectMenuTree(boolean isAdmin, SimpleUser simpleUser);


    /*** 根据条件查询所有菜单
     * @param menuDto
     * @return */
    List<Menu> listAllMenus(MenuDto menuDto);

    /*** 根据 ID 查询菜单和权限
     * @param menuId
     * @return */
    Menu getOne(Long menuId);

    /*** 添加菜单或权限
     * @param menuDto
     * @return */
    int addMenu(MenuDto menuDto);

    /**
     * 修改菜单或权限
     * @param menuDto
     * @return
     */
    int updateMenu(MenuDto menuDto);

    /**
     * 根据 ID 删除菜单或权限
     *
     * @param menuId
     * @return
     */
    int deleteMenuById(Long menuId);

    /**
     * 根据菜单 ID 判断菜单是否有子节点
     *
     * @param menuId
     * @return
     */
    boolean hasChildByMenuId(Long menuId);


    /**
     * 根据角色 ID 查询菜单权限 ID 数据
     *
     * @param roleId
     * @return
     */
    List<Long> getMenusIdsByRoleId(Long roleId);
}
